Simplified Fast 3D Finite Difference Particulate Flow Algorithms for Liquid Toner Mobility Simulations

ABSTRACT

In updating particle information in a particulate fluid flow simulation, a 2D/3D collision scheme checks for the existence of any particle collision, and if so, calculates the collision force and torque on each colliding particle. Another 2D/3D collision scheme checks whether any particle is contacting a solid wall domain boundary, and if so, calculates the wall force and torque. Following collision, the particle location is updated according to the particle translational velocity, the collision force, and the domain wall reaction force. The particle orientation is updated according to the particle angular velocity, collision torque, and wall reaction torque.

CROSS-REFERENCE TO RELATED APPLICATION(S)

The present application is related to (i) U.S. patent application Ser. No. 12/707,956, filed on Feb. 18, 2010, entitled “A Finite Difference Particulate Fluid Flow Algorithm Based on Level Set Projection Framework,” and (ii) U.S. patent application Ser. No. 12/878,784 filed on Sep. 9, 2010, entitled “Collision Effect and Particle Information Update in Particulate Fluid Flow Simulations,” each of which is incorporated by reference herein in its entirety.

BACKGROUND

1. Field of Invention

The present invention is directed toward systems and methods for simulating two- and three-dimensional (2D and 3D) particulate fluid flows.

2. Description of Related Art

Particulate fluid flows are of great interest and of fundamental importance. Liquid toner, electrophoresis, and colloidal flows are just a few examples of particulate fluid flows. An easy model for particulate fluid flow consists of rigid solid particles and Newtonian fluid. To simulate particulate fluid flows with rigid solid particles, it is preferable to have an algorithm that solves the nonlinear Navier-Stokes equations and the particle effect at the same time.

Prior art methods for simulating particulate fluid flows include using the Navier-Stokes equations, which treat the particles as fluid with an additional constraint on the rigidity of the particles. An example of this method is illustrated in Nitin Sharma et al., A Fast Computation Technique for the Direct Numerical Simulation of Rigid Particulate Flows, Journal of Computational Physics, 205(2):439-457, May 20, 2005 (Sharma). Sharma's method is based upon a volume of fraction function approach to represent the particle-fluid boundary. A consequence of the Sharma method is that the numerical “thickness” of the interface is one cell.

The cross-referenced applications identified above provide improvements on Sharma's technique as described in such applications.

SUMMARY OF INVENTION

The present disclosure provides still further improvements in particulate fluid flow analysis, including simplified 3D collision schemes.

When a particle collision occurs, one has to detect the particles that collide, and, if needed, implement the forces incurred by the collision. In cases with high viscosity fluid, which are of particular interest, the effect of lubrication is strong. That is to say whether the collision among particles is fully elastic, non-elastic, or somewhere in between is relatively unimportant. That there be no overlapping of particles, however, is important. Hence, a goal of the collision scheme is to first check, preferably at the end of each time step, whether a pair or group of particles are colliding, and if so, to find the contact point(s) or overlapping area(s) and to define a suitable force and torque to repel these particles so that they do not overlap. Because the time step is usually small in a highly viscous fluid flow simulation, the overlap among particles, if it exists, is also very small. This greatly facilitates the design of a collision scheme.

In the present invention, the incompressible Navier-Stokes equations are still first solved everywhere in the solution domain, including the region occupied by the rigid solid particles. The obtained velocity is rendered incompressible everywhere in the solution domain by enforcing the continuity equation (i.e., by doing projection). The incompressible velocity field in the regions occupied by the particles is further corrected so that it represents rigid body motion. A simplified 2D/3D collision scheme is developed and employed to check whether any particle collision occurs, and if so, the collision force and torque on each colliding particle are calculated. Another 2D/3D collision scheme is developed and employed to check whether any particle is hitting the solution domain boundary, and if so, and if the domain boundary is a solid wall, the wall force and torque are calculated. Finally, the particle location is updated according to the particle translational velocity, the collision force, and the domain wall reaction force. The particle orientation is updated according to the particle angular velocity, collision torque, and wall reaction torque. The 2D and 3D simulation codes based on the present invention run much faster than known prior simulation codes.

One aspect of the invention comprises a non-transitory medium encoded with a program for execution by one or more processors to determine particle information in a particulate fluid flow. The program comprises instructions for determining whether two particles can be in contact based on the location of the center of a second of the two particles with respect to an envelop of the first of the two particles; instructions for determining more precisely whether the first and second particles are in contact, including instructions for dissecting the perimeter of the second particle into a plurality of patches defining a plurality of nodes and checking whether each node is located in the envelop, and which node is most inside the envelop, determining the contact point on the second particle based on the results of executing the dissecting instructions, and determining the contact point on the first particle. Instructions also provided for calculating a force and torque on the particles from the fluid; and determining, based at least in part on the calculated force and torque on the particles, updated velocity components, position, and orientation of at least one of the particles.

Preferably, the instructions for determining the contact point on the first particle comprise instructions for representing the surface of the first particle by a multiple parameter equation and solving for the multiple parameters in a local coordinate system of the first particle.

In another aspect, the invention entails a non-transitory medium with a program for execution by one or more processors to determine particle information in a particulate fluid flow in a solution domain. The program comprises instructions for finding an external bounding box for a particle in the particulate fluid flow; instructions for determining whether the particle is in contact with a boundary of the solution domain; and instructions for constructing a wall force and torque on the particle using the external bounding box.

In some embodiments, the boundary includes a vertical wall and a horizontal wall, and the instructions for determining comprise instructions for determining whether a particle is in contact with the vertical wall and instructions for determining whether the particle is in contact with the horizontal wall.

The program preferably further includes instructions for calculating the moment of inertia tensor for each particle in the particulate fluid flow.

Other objects and attainments together with a fuller understanding of the invention will become apparent and appreciated by referring to the following description and claims taken in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings wherein like reference symbols refer to like parts.

FIG. 1 shows the locations of discrete variables in connection with a spatial algorithm described herein.

FIG. 2 is a flow chart illustrating 2D collision schemes for elliptic particles.

FIG. 3 shows two ellipses of different orientations and sizes in connection with 2D collision schemes for elliptic particles.

FIG. 4 shows two ellipsoids of different orientations and sizes in connection with 3D collision schemes for ellipsoidal particles.

FIG. 5 shows the orientation of a local coordinate system axis of a particle with respect to the fixed global coordinate system in connection with 3D collision schemes for ellipsoidal particles.

FIG. 6 is an illustration of a system in which embodiments of the present invention may be practiced.

DESCRIPTION OF THE PREFERRED EMBODIMENTS I. Governing Equations

Consider a particulate fluid flow system with a few rigid, electrically charged solid particles in a viscous fluid. The fluid is Newtonian and incompressible with density ρ_(f), dynamic viscosity μ, and dielectric permittivity ∈₀∈_(f). The solid particles are rigid with density ρ_(s), dielectric permittivity ∈₀∈_(s), and charge density q. Let Ω denote the solution domain which includes the solid particles and the fluid. Let P(t) be the part of Ω that is occupied by the solid particles and ∂P be the fluid particle interface. The governing equations include the Gauss equation of charge, the Navier-Stokes equation, the continuity equation, and the rigid body constraint, presented as equations (1), (2), (3), and (4), respectively, in the Appendix to the specification. Other equations numerically-referenced below are also set forth in the Appendix. In the Gauss equation of charge, ∈₀ is the dielectric permittivity of vacuum, ∈ the relative dielectric constant of the oil or particle, φ the electric potential, and q the electric charge density. In the Navier-Stokes equations, u is the fluid velocity, ρ is the density, μ is the dynamic viscosity of the fluid, and E=−∇φ is the electric field. It is noted that, since the solution domain consists of the fluid and the solid particles, the dielectric permittivity, charge density, and mass density are functions of the space variable given by equations (5). For the case where the fluid is not charged, as is the case in the illustrated embodiments, q_(f)=0.

The boundary conditions at the interface of the fluid and the particles are the continuity of the velocity, the continuity of the traction force, the continuity of the normal component of the electric displacement D=∈E , and the continuity of the tangential components of the electric field E. However, they are automatically satisfied because the equation of motion of the solid particles has been merged into the Navier-Stokes equations (so the density takes different values in the fluid and solid particle sub-domains), and the same fluid dynamic viscosity has been used everywhere (including the part occupied by the particles). There are boundary conditions to satisfy at the boundary of the domain Ω. On solid walls, it is assumed that the normal and tangential components of the velocity vanish. At both inflow and outflow, the present formulation allows prescription of either the velocity given by equation (6) or the pressure boundary condition given by equations (7), where n denotes the unit normal to the inflow or outflow boundary. For the Gauss equation, either the boundary potential given by equation (8) is prescribed or the Newmann condition defined in equation (9) is assumed, where n is the unit normal to the boundary.

There are at least two ways to make the governing dimensionless, which are discussed in the next two subsections.

1. Normalization I

One way of normalization is to use the convection time scale, according to equations (10), where the primed quantities are dimensionless and L, U, ρ_(f), V₀ are respectively the characteristic length, characteristic velocity, density of the fluid, and the externally applied voltage. Substituting the equations (10) into equations (2)-(4), and dropping the primes, yields equations (11)-(14), where the density ratio ρ, Reynolds number, dimensionless charge density σ, and dimensionless electrostatic force are defined by equations (15).

This format of governing equations is best for simulation cases in which the Reynolds number is large. One can see that, when the Reynolds number is very large (Re>>1), the viscosity term is relatively unimportant and can be neglected in simulations. Equation (12) without the viscosity term is usually referred to as Euler's equation.

2. Normalization II

Another way of normalization is to use the viscosity time scale, according to equations (16), where the primed quantities are dimensionless and L, U, ρ_(f), V₀ are respectively the characteristic length, characteristic velocity, density of the fluid, and the externally applied voltage. Substituting the equations (16) into equations (2)-(4), and dropping the primes, yields equations (17)-(20), where the density ratio ρ, Reynolds number, dimensionless charge density σ, and dimensionless electrostatic force are defined by equations (21).

This second way of normalization is more suitable for simulations with a small Reynolds number, which is the case for liquid toner applications. One can see that, if the Reynolds number is much less than 1, the convection term is relatively unimportant and can be neglected in simulations. Equation (18) without the convection term is often referred to as the creeping flow equation.

II. Basic Numerical Algorithms

Initially, it is noted that the superscript n (or n+1) denotes the time step, as in equation (22) and so on. The algorithms described herein are based on a particulate fluid flow algorithm called distributed Lagrangian multiplier method (DLM) first developed by Sharma. The algorithm works well for both 2D and 3D problems, whether there are single or multiple particles.

1. Temporal Algorithm

Suppose we have velocity u^(n), pressure p^(n), particle center of mass location x_(c) ^(n)=(x_(c) ^(n), y_(c) ^(n), z_(c) ^(n)), linear velocity mass center of the solid particle U^(n), and angular velocity Ω^(n), the purpose of the temporal algorithm is to integrate the governing equations in time to obtain u^(n+1), p^(n+1), x_(c) ^(n+1), U^(n+1), Ω^(n+1). The algorithm described herein is first-order accurate in both time and space.

1.1 Calculate the Material Property Distributions

Several material property distributions need to be calculated before any of the equations can be integrated to obtain field variables at t^(n+1) These include the density distribution ρ^(n), the dielectric permittivity distribution ∈^(n), and the charge distribution q^(n). They are obtained using the particle locations x_(c) ^(n) at t^(n).

1.2 Solve the Gauss Equation of Charge

The Gauss equation of charge is solved using the Multigrid (MGD) method. The electric potential φ^(n) is obtained and, hence, the electric field E^(n).

1.3 Obtain the Electrostatic Force Distribution

The electrostatic force distribution f_(e) ^(n) is calculated by simply taking the product q^(n)×E^(n) and doing the normalization in equations (15) or (21).

1.4 Time Integration for Momentum and Continuity Equations

When the Reynolds number is greater than 1, usually an explicit integration scheme (which is easier to implement) works well for the simulation. However, if the Reynolds number is less than 1, a semi-implicit time integration scheme may be needed for the momentum and continuity equations. Both the explicit and semi-implicit time integration schemes are explained here.

A. Explicit Time Integration

Since the explicit time integration works well when the Reynolds number is not small (Re>1), equations from “Normalization I” are used to explain the explicit scheme. For an explicit temporal algorithm, first calculate equation (23). Then solve projection (Poisson's) equation (24) to obtain the new pressure. Finally, the velocity predictor û at t^(n+1) is obtained by equation (25).

In equation (23), one can basically apply any explicit advection scheme (1^(st)- 2^(nd)- or even higher-order) for the advection term. For better stability performance, the 1^(st)-order upwind scheme for the advection term is used. It is noted that the Godunov method for advection term is not compatible with the DLM scheme for particulate fluid flows; hence, it is recommended not to use any versions of the Godunov method. The central difference for the viscosity term is used. It is also noted that the right hand side of equation (23) consists of only known quantities from time step n. Hence, it is very easy to calculate u*. For equation (24), the Multigrid method (MGD) is employed to solve the resulting linear system.

B. Semi-Implicit Time Integration

Since the semi-implicit time integration is necessary when the Reynolds number is small, equations from “Normalization II” are used to explain the semi-implicit scheme. For temporal integration, first calculate equation (26). It is noted that in contrast to the explicit scheme, the pressure gradient is included in the right hand side of equation (26) to improve the accuracy of the velocity predictor when a bigger time step is used. Since the desire is to project the whole velocity predictor to obtain the whole new pressure, the pressure gradient is subtracted to obtain the first velocity predictor, given by equation (27). Then solve projection (Poisson's) equation (28) to obtain the new pressure. Finally, the velocity predictor û at t^(n+1) is obtained by equation (29).

In equation (26), one can again use the 1^(st)-order upwind scheme for the advection term and the central difference for the viscosity term. It is noted that one needs to solve a linear system to obtain u** from equation (26), since it shows up in both the right and left hand sides of the equation. The linear system is well conditioned as long as the time step Δt is only a few times larger than the CFL number of the explicit scheme. The successive-over-relation method (SOR) should work well in solving the linear system when Δt is not too large. However, if the time step is several orders larger than the CFL, a multigrid method is necessary to guarantee the fast convergence when solving the resulting linear system. Since the viscosity term at the right hand side of equation (26) is defined using unknown velocity u**, the time integration scheme is implicit for the viscosity term. However, because the convection term and the projection step is still explicit, the time integration scheme is only “semi-implicit.”

1.5 Rigid Body Projection

The explicit time integration of momentum and continuity equations is done without considering whether there is a solid particle or not. So, the obtained velocity û is actually the fluid velocity at t^(n+1) in the fluid region Ω/P(t). Sharma argues that the linear and angular momenta of the particle region should be conserved during the rigid body projection. In that respect, the present algorithm follows Sharma's procedure. The linear and angular momenta of the particle region are first calculated. Moreover, because they should be conserved, the new mass center linear velocity and the new angular velocity of the solid particle can be obtained using equations (30) and (31) respectively, where M is the mass of the solid particle, I_(p) is the moment of inertia tensor of the solid particle, x_(c) ^(n) is the location of the center of mass of the solid particle at t=t^(n), U^(n+1) is the mass center translational velocity of the particle at t=t^(n+1), and Ω^(n+1) is the new angular velocity of the particle. The calculation of I_(p) will be explained below. In 2D, I_(p) will reduce to a scalar.

After the new mass center velocity and angular velocity are obtained, the velocity in the particle region is updated by equation (32).

1.6 Particle Location and Orientation Update

The next step is to update the particle center of mass location using equation (33). If the particle is not spherical (in 3D) or not circular (in 2D), one also has to update the orientation of the particle by using the angular velocity Ω. For example, suppose e₁ ^(j) is a unit vector in the direction of the longest axis of ellipsoidal particle j. The orientation of the unit vector with respect to the fixed global coordinate system can be represented by the three direction cosines l_(1′α)=e₁ ^(j)·e_(α), α=1, 3 between e₁ ^(j) and the three fixed axes. The new orientation of the longest axis can be obtained by using equation (34), where e_(αβγ) is the unit alternating tensor. The other two axis orientations can be updated in a similar way.

1.7 Particle and Domain Wall Collision Effects

Calculate the linear and angular acceleration caused by particle and domain wall collisions for each particle using equations (35), where F^(C), T^(C), F^(w), and T^(w) are respectively the forces and torques resulting from particle collisions and domain wall collisions. The particle location and orientation are then updated by equations (36) and (37).

1.8 Normalize the Orientation Vectors of Each Particle

Each of the orientation vectors (l_(i′1), l_(i′2), l_(i′3)), i=1, 2, 3 is originally a unit vector. However, after the finite rotations in equations (34) and (38), they will not remain so. For the stability and accuracy of simulation, one needs to normalize the three orientation vectors at the end of each time step so that they remain as unit vectors.

2. Constraints on Time Step

2.1 Explicit Scheme

If the explicit time integration scheme is used, the time step Δt will be constrained in the CFL condition (due to convection, viscosity, and total acceleration), as provided in equation (38), where h=min(Δx,Δy,Δz) and the force variable is given by equation (39).

2.2 Semi-Implicit Scheme

If the semi-implicit time integration scheme is used, the time step can be much larger, as provided by equation (40), where h=min(Δx,Δy,Δz) and the force variable is given by equation (41).

3. Spatial Algorithm

FIG. 1 shows the locations of discrete variables. The velocity components, electric potential, and electric field components are located at cell centers, while the pressure is located at grid points. The material properties like mass density, dielectric permittivity, and dynamic viscosity are also evaluated at the center of the each cell.

3.1 Advection term

The advection term in equations (23) and (24) is evaluated using the 1^(st)-order upwind scheme, as per equation (42).

3.2 Viscosity Term

The viscosity term in equations (23) and (24) is evaluated using the central differencing of equation (43).

3.3 LHS of Gauss Equation

The LHS of the Gauss equation is discretized using the same central difference technique as provided by equations (44) and (45).

3.4 Calculation of Electric Field

After the electric potential is solved from the Gauss equation of charge, the electric field can obtained by central differencing according to equations (46).

III. Collision Schemes

For a particulate fluid flow system with multiple solid particles, the linear momentum and angular momentum are evaluated for each particle in the rigid particle projection step. When particle collisions occur, one has to detect the particles that collide and, if needed, implement the forces and torques incurred by collision. In cases with high viscosity fluid, which are of particular interest, the effect of lubrication is strong. That is to say whether the collision among particles is fully elastic, non-elastic, or somewhere in between is relatively unimportant. That there be no overlapping of particles, however, is important. Hence, a goal of the collision scheme is to first check, at the end of each time step, whether a pair or a group of particles are colliding, and if so, to find the contact points or overlapping area and to define a suitable force and torque to repel these particles so that they do not overlap. Because the time step is usually small in a highly viscous fluid flow simulation, the overlap among particles, if it exists, is also very small. This greatly facilitates the design of a collision scheme. The most common shape encountered in connection with the work pertaining to the present disclosure is the ellipse for 2D and the ellipsoid in 3D. The following describes two collision schemes for 2D elliptic particles and one collision scheme for 3D ellipsoidal particles. A circular/spherical particle can be deemed a special case of the elliptic/ellipsoidal particle.

1. 2D Scheme for Elliptic Particles

This scheme is described with reference to the flow chart of FIG. 2. The first step is to check whether two particles can be in contact or not (step 21). As shown in FIG. 3, consider two elliptic particles, say particle j and particle k, of different sizes and orientations. Particle j's major axis is a_(j) and minor axis b_(j), where a_(j)≧b_(j). Its orientation, which is the angle between the major axis and the x axis of the fixed global coordinate system, is α_(j). Particle k's major and minor axes and orientation are given by the same variables but with k as the subscript. The dashed curve in FIG. 3 is an envelop of ellipse j. The shortest distance of each point on the envelop to ellipse j is a_(k). The dashed curve is not an ellipse, and there is no mathematical formula to precisely describe it. However, in the local X_(j)−Y_(j) coordinate system, we can approximate the dashed curve or envelop as another ellipse, whose equation is given by equation (47). If the center x_(c,k) of the second particle k is not located on or inside the dashed envelop, the two elliptic particles cannot be in contact with each other. It is noted that it is possible that the two ellipses are not in contact even if the center of the second particle is inside the dashed envelop. In a particulate flow system with quite a lot of particles, any particle most likely is only in contact with a few other particles. So, the purpose of the first step is just to quickly rule out the collision of most particles. Hence, first calculate the relative location of the center of particle k with respect to the local coordinate system of particle j according to equations (48). Then calculate equation (49). If D_(k,j)≦0, the center of particle k is outside the dashed envelop of particle j and the two particles are deemed to not be in contact. If D_(k,j)<0, the two particles can be in contact.

If the two particles under test (j and k) cannot be in contact, the routine considers whether another pair of particles can be in contact.

If it is determined in the first step that the two elliptic particles in consideration can be in contact, the next step is to check precisely whether they are in fact in contact (step 22). To do this, the perimeter of the second elliptic particle (particle k) is dissected into m arcs (so there are m nodes). The number m should be large enough so that each arc can be accurately approximated as a straight segment, but should not be so large to require an unreasonably large amount of calculation (CPU) time. In the work done in connection with this disclosure 60≦m≦100. For each of m nodes, check whether it is located in the first ellipse. To do this, first calculate the coordinates of the i^(th) (1≦i≦m) node with respect to the local coordinate system of particle k given by equations (50). The relative location with respect to the local coordinate system of particle j is then calculated according to equations (51). Next, it is checked whether (x_(k,j) ^(i), y_(k,j) ^(i)) is located in the first elliptic particle (particle j) by calculating equation (52). If D_(k,j) ^(i)>0 for all 1≦i≦m, the two ellipses are not in contact. The process then returns to step 21 to consider another pair of particles, if any. If D_(k,j) ^(i)≦0 for any 1≦i≦m, then the two ellipses are in contact.

In step 23, the contact points are determined. Take the node that lies most inside the particle j (i.e., the node that gives the minimal D_(k,j) ^(i)) as the contact point (x_(cont,k) ^(k), y_(cont,k) ^(k)) on particle k, referred to as the local coordinates on particle k. The contact point is denoted by (x_(cont,k), y_(cont,k)) when referred to the fixed global coordinates.

Having determined the contact point on particle k, next locate the contact point on the first particle (particle j). This can be done in a way similar to the previous step, i.e., by dissecting the perimeter of particle j into m arcs (with m nodes) and checking which node lies most inside the second particle (particle k). So, first calculate the coordinates of the i^(th) (1≦i≦m) node with respect to the local coordinate system of particle j, according to equations (53). Its relative location with respect to the local coordinate system of particle k is then calculated according to equations (54), with the relative center location defined as in equations (55). Next it is checked whether (x_(j,k) ^(i), y_(j,k) ^(i)) is located in the second elliptic particle (particle k) by calculating equation (56). Take the node that lies most inside the particle k (i.e., the node that gives the minimal D_(j,k) ^(i)) as the contact point (x_(cont,j), y_(cont,j)) on particle j.

Next, in step 24, the repulsive force and torque on the first particle (particle j) and on the second particle (particle k) is calculated as per equations (57) and (58), respectively, where A is a force amplitude that is large enough to keep particles apart. In the work of the present disclosure, it has been learned that A should be one order larger than the resultant force on the particle.

All particle pairs should be evaluated to determine all collisions. If it is determined in step 25 that all particle pairs have not yet been considered, the routine returns to step 21 to begin again for another particle pair. After all the possible collisions have been considered, and all the repulsive forces and torques are calculated, the j^(th) particle is moved in step 26 as determined by equation (59), where x_(c,j) ^(n+1) and x_(c,j) ^(n) are the center of particle j at time t^(n+1) and t^(n), respectively, Δt is the time step, U_(j) ^(n+1) is the particle velocity as calculated according to U.S. patent application Ser. No. 12/707,956 identified above, F_(j) ^(C) is the total collision force on particle j (exerted by all the particles colliding with it), and M_(j) is the total mass of particle j. Similarly, the orientation of the j^(th) particle is updated in step 27 using equation (60), where α_(j) ^(n+1) and α_(j) ^(n) are the orientation of particle j at time t^(n+1) and t^(n), respectively, ω_(j) ^(n+1) is the angular velocity as calculated according to '956 application identified above, T_(j) is the total collision torque on the particle j (exerted by all particles colliding with it), and I_(j) is the moment of inertia of particle j.

2. 2D Alternative for Elliptic Particles

The collision scheme in the previous subsection works well. However, the perimeter dissecting of both particles consumes a lot of CPU time. An alternate approach is described in this subsection. This is described with reference to FIG. 2 as the general flow is the same, although the methodology and technique used to carry out some of the steps are different as described below.

Steps 21 and 22 of FIG. 2 are the same in this alternate approach. In determining the contact points, in step 23, take the node that lies most inside the particle j (i.e., the node that gives the minimal D_(k,j) ^(i)) as the contact point (x_(cont,k) ^(k), y_(cont,k) ^(k)) on particle k. The same point is denoted as (x_(cont,k), y_(cont,k)) when referred to the fixed global coordinate system; and is (x_(cont,k) ^(j), y_(cont,k) ^(j)) when referred to the local system on particle j. Here, the perimeter of the first particle (i.e., particle j) is not dissected. Suppose the p^(th) node on particle k has been found located most inside particle j. Calculate the inward normal to particle k at the p^(th) node by (referring to the local coordinates on particle k) evaluating equations (61). Referring to the fixed global coordinate system, the inward normal to particle k is given by equation (62).

The next thing is to find the contact point on the first particle (particle j). Since the time step used in a particulate fluid flow code is usually very small (it is so small that any particle only moves a distance smaller than a fraction of the particle size), the contact point on the second particle (particle k) as calculated above is usually extremely close to the surface of the first particle (particle j). Since the surface of the first particle can be represented by (x_(j), y_(j))=(a_(j) cos θ, b_(j) sin θ), an approximation can be made by solving the corresponding parameters for the contact point in the local coordinate of particle j from equations (63). The solution is given by equations (64) and (65). The parameter ∈ is usually just slightly less than 1, which is saying that the contact point on particle k is very close to the surface of particle j. Hence, take the contact point on particle j to be (referred to the local coordinates on particle j) as given by equation (66). When referred to the global coordinate system, the contact point on particle j is given by equation (67).

In step 24, the collision forces on the two particles are determined according to equations (68), and the collision torques according to equations (69).

Steps 25-27 are the same in the alternative approach as in the first approach described.

3. 3D Scheme for Ellipsoidal Particles

This scheme is also described with reference to FIG. 2, as the general flow is the same with the differences in step implementation being described herein. As is the case in the 2D schemes, the first step in the 3D scheme is to check whether two particles can be in contact or not (step 21). For purposes of description and illustration, two ellipsoidal particles are assumed—say particle j and particle k, of different sizes and orientations. FIG. 4 shows two such particles. Particle j's three axes are a_(j), b_(j), c_(j) in length, where a_(j)≧b₁≧c_(j). Its orientation, which is represented as the direction cosines between the three axes and the global x, y, z axes, is l_(αβ) ^(j) defined by equation (70), where e_(α) ^(j) is the unit base vector along the α-th axis of the local coordinate system for particle j and e_(β) is the unit base vector along the β-th axis of the fixed global coordinate system. FIG. 5 shows the relative orientation of the first axis of particle j with respect to the fixed global coordinate system. Particle k's axes are a_(k), b_(k), c_(k) and orientation is l_(αβ) ^(k). The dashed curve in FIG. 4 is an envelop of ellipsoid j. The shortest distance of each point on the envelop to ellipsoid j is a_(k). Theoretically, one cannot have any functional description of the envelop. However, in the local X_(j)−Y_(j)−Z_(j) coordinate system, the envelop can be approximated as another ellipsoid, whose equation is given by equation (71). If the center x_(c,k) of the second particle k is not located on or inside the dashed envelop, the two elliptic particles most likely are not in contact with each other. It is noted that it is possible that the two ellipsoids are not in contact even if the center of the second particle is inside the dashed envelop or the two ellipsoids are in contact even if the center of the second particle is not inside the dashed envelop. In a particulate flow system with quite a lot of particles, any particle most likely is only in contact with a few other particles. So, the purpose of the first step is to quickly rule out the collision of most particles. Hence, first calculate the relative location of the center of particle k with respect to the local coordinate system of particle j according to equations (72). Then calculate equation (73). If D_(k,j)>0, the center of particle k is outside the dashed envelop of particle j, and the two particles are deemed to be not in contact. If D_(k,j)≦0, the two ellipsoidal particles can be in contact.

If the two particles under test (j and k) cannot be in contact, the routine considers whether another pair of particles can be in contact.

If it is determined in the first step that the two ellipsoidal particles in consideration can be in contact, the next step is to check precisely whether they are in fact in contact (step 22). To do this, the perimeter of the second particle (particle k) is dissected into m×n patches (and about a similar number of nodes). The numbers m and n should be large enough so that each patch is small enough that it can be considered as a flat plan, but should not be so large to require an unreasonably large amount of calculation (CPU) time. In the work done in connection with this disclosure 60≦m≦100 and n can be about half as large as m. For each of the nodes, check whether it is located in the first ellipsoid. To do this, first calculate the coordinates of a node on the perimeter of particle k with respect to the local coordinate system of particle k according to equations (74), where 1≦p≦m, 0≦q≦n, and other variables defined as in equations (75). The relative location with respect to the local coordinate system of particle j is then calculated according to equations (76), where equation (77) holds. Next, it is checked whether (x_(k,j), y_(k,j), z_(k,j)) is located in the first ellipsoidal particle (particle j) by calculating equation (78). If D_(k,j)>0 for all θ_(p) and φ_(q) the two ellipsoids are not in contact, and the routine returns to step 21 to consider another pair of particles, if any. If D_(k,j)≦0 for some θ_(p) and φ_(q), then the two ellipsoids are in contact.

In step 23, the contact points are determined. To determine the contact point on particle j, take the node that lies most inside the particle j (i.e., the node that gives the minimal D_(k,j)) as the contact point. The contact point on particle k is denoted by (x_(cont,k) ^(k), y_(cont,k) ^(k), z_(cont,k) ^(k)) when referred to the local coordinate system of particle k, by (x_(cont,k), y_(cont,k), z_(cont,k)) when referred to the global fixed coordinate system, and by (x_(cont,k) ^(j), y_(cont,k) ^(j), z_(cont,k) ^(j)) when referred to the local coordinate system on particle j. The relationship between them is given by equations (79) and (80). The inward normal at the contact point (referred to the local coordinate system on particle k) is given by equation (81), where the first vector is a tangent vector to the contact point on ellipsoid k obtained taking the derivative of equation (74) with respect to the parameter θ_(p), and the second is a tangent vector obtained by taking the derivative of equation (74) with respect to the parameter φ_(q). n_(k) ^(k) is not a unit vector but can be made one by normalization according to equation (82). In the fixed global coordinate system, the inward normal is given by equation (83).

Having determined the contact point on particle k, next locate the contact point on the first particle (particle j) and calculate the repulsive force and torque. This can be done in a way similar to the previous step, i.e., by dissecting the perimeter of particle j into m×n patches and checking which node lies most inside the second particle (particle k). However, in 3D, the following approximation works as well and can save a lot of CPU time.

Since the time step in a particulate fluid flow code is usually very small (so small that any particle only moves a distance smaller than a fraction of the particle size), the contact point on the second particle (particle k) as calculated above is usually extremely close to the surface of the first particle (particle j). Since the surface of the first particle can be represented using the parameter format of equation (84), where θ, φ are two parameters, try to solve for the corresponding parameters for the contact point in the local coordinate of particle j from equations (85). In these equations, ∈ is an additional parameter to be decided. Since the contact point is very close to the surface of the ellipsoid, ∈ is very close to 1. Dividing the first equation of equations (85) by ∈a_(j), the second by ∈b_(j), the third by ∈c_(j), and summing up the square of each equation, yields equations (86) and (87). With ∈ and the third of equations (85), one can get equation (88). From the first of equations (85), one gets, if cos φ≠0, equation (89). If cos φ=0, one can obtain θ from the second of equations (85). After parameters ∈, θ, φ are calculated, the contact point on the first ellipsoid (particle j) can be approximated by equation (90). The inward normal at the contact point on the first particle is given by equation (91), if referred to the local coordinate system of particle j, and is given by equation (92).

In step 24, the repulsive force and torque on the second particle (particle k) and the first particle (particle j) are calculated by equations (93) and (94), where A is a force amplitude which should be large enough to keep the particles apart. In this work, it has been found that A should be one order larger than the resultant body force on particles j and k.

All particle pairs should be evaluated to determine all collisions. If it is determined in step 25 that all particle pairs have not yet been considered, the routine returns to step 21 to begin again for another particle pair. After all the possible collisions have been considered, and all the repulsive forces and torques are calculated, steps 26 and 27 are carried out as described in connection with the 2D scheme above.

IV. External Bounding Box for Ellipsoidal Particles

As used herein, the phrase “external bounding box” refers to the smallest 3D rectangular box that just encloses the considered ellipsoidal particle and whose side faces are perpendicular to the x, y, z axes, respectively. Finding the external bounding box can greatly reduce the CPU time needed for calculating the linear and angular momenta and facilitate the code implementation to find the bounding force by domain wall. To find the external bounding box for an arbitrary ellipse in a 2D domain is relatively easy. However, to find the 3D external bounding box for an ellipsoidal particle of arbitrary orientation is more complicated.

To find such a box, first consider the parametric representation of a point on the surface of an ellipsoid (particle #j) with three axes a, b, c. This is given by equation (95). For simplicity of explanation, assume a≧b=c. However, the algorithm described below can be easily extended to the general case a≧b≧c. The orientation of the ellipsoid is defined by the direction cosines between its three axes and the fixed global axes, as per equation (96), where e_(α) ^(j) is the unit base vector along the α-th major axis of the local coordinate system on the ellipsoidal particle j and e_(β) is the unit base vector along the β-th axis of the fixed global coordinate system. Two tangent vectors at the point can be easily obtained by taking the derivative of the parametric representation with respect to the two parameters, as given by equations (97). With respect to the fixed global coordinate system, the two tangent vectors are given by equations (98).

To find the two x side faces of the bounding box, i.e., the two side faces that are perpendicular to the fixed global x axis, find the parameters θ and φ at which both the two tangent vectors are perpendicular to the x axis. This is to say, find the parameters so that the x component of the two tangent vectors vanish using equations (99). From the second of equations (99), one obtains, if l₁₁ ^(i)≠0, equation (100), from which two θ's can be obtained, using equations (101). Substituting the two θ's into the first of equations (99), yields equations (102).

Now two sets of parameters have been found for the two side faces perpendicular to the x axis. The next step is to calculate the two points with the smallest and largest x coordinates, according to equations (103). Hence, the corresponding x coordinates of the two side faces are given by equations (104). Moreover, the corresponding number of x cell numbers that the two side faces pass are given by equations (105), where int is a standard Fortran command taking the maximum integer that is smaller than the parameter or the result of operation defined in the parentheses.

If l₁₁ ^(i)=0, it means that the long axis a is perpendicular to the fixed global x axis. So, the x coordinates of the two side faces perpendicular to the x axis are given by equations (106).

One can obtain the coordinates of the y and z side faces in a similar way. For y side faces, if l₁₂ ^(i)≠0, the two sets of θ and φ are given by equations (107) and (108). The y coordinates of the y side faces are as stated in equations (109). Moreover, the corresponding cell numbers in the y direction where the two side faces pass through are given by equations (110). If l₁₂ ^(i)=0, it means that the long axis a is perpendicular to the fixed global y axis. So, the y coordinates of the two side faces perpendicular to the y axis are given by equations (111).

For z side faces, if l₁₃ ^(i)≠0, the two sets of θ and φ are given by equations (112) and (113). The z coordinates of the z side faces are as stated in equations (114). Moreover, the corresponding cell numbers in the z direction where the two side faces pass through are given by equations (115). If l₁₃ ^(i)=0, it means that the long axis a is perpendicular to the fixed global z axis. So, the z coordinates of the two side faces perpendicular to the z axis are given by equations (116).

V. Check Whether a Particle Touches the Solution Domain Wall

For a particulate fluid flow system, the particles may collide against each other as well as hit the solution domain boundary. If the domain boundary is a solid wall, one has to be able to detect the particles that hit the wall and implement suitable force and torque to prevent the hitting particles from penetrating the solid wall.

1. 2D Elliptic Particle

Suppose the major axis of the elliptic particle is oriented by an angle θ to the global axis. The coordinates of an arbitrary point on the boundary of the elliptic particle with respect to the local coordinate system are given by equations (117), where θ is a parameter. The tangent vector at the point can be obtained by taking the derivative of the coordinates with respect to the parameter defined by equation (118). It is noted that the above tangent vector is with respect to the local coordinate system which is oriented with an angle θ to the global coordinate system. In the global coordinate system, the tangent vector is defined by equation (119). If the particle is touching the vertical boundary of the solution domain, the tangent vector at the contact point should be parallel to the global y axis. Hence, the contact point may be obtained by equating the x component of τ (the vector defined in equation (119)) to be zero, according to equation (120) or equations (121). Therefore, the two possible contact points with the vertical wall are as stated in equations (122). The next step is to check whether the x coordinate of the two candidates fall inside the solution domain. Suppose the solution domain extends from x=0 to x=xlength. If tol<x₁, x₂<xlength−tol, where tol is a small positive real number or a tolerance, the particle is deemed to not be contacting the vertical domain wall. Although tol can be any small real number, tol is preferably within the range defined by equation (123), where 0.25<α<0.05. If min(x₁,x₂)<tol or max(x₁,x₂)>xlength−tol, the particle is considered to be touching the wall, and hence it necessary to construct a force and a torque so that the particle will not continue to penetrate the wall. To facilitate explanation of how the wall force and torque is constructed, it is more convenient to rearrange the notation. Let x₁=(x₁, y₁) be one of the candidates that has the smaller x coordinate, while x₂=(x₂,y₂) be the one that has the larger x coordinate. If x₁<tol, the particle is touching the left vertical wall. Construct a horizontal wall force and torque according to equations (124), where A is an arbitrary coefficient, the same as the one introduced for the collision scheme. Similarly, if x₁>xlength−tol, the particle is touching the right vertical wall. For this, construct a horizontal wall force and torque according to equations (125).

In a similar way, one can check whether the particle is touching the horizontal boundaries of the solution domain, and, if so, construct the wall force and torque.

2. 3D Ellipsoidal Particle

Checking whether an ellipsoidal particle is touching the solution domain boundary is more complicated. However, the external bounding box that was derived in the previous section can be easily applied for the purpose.

For example, in the x direction, the two points of an ellipsoid that are in contact with the x side faces of its bounding box are given in equation (103). As in the 2D case of elliptic particles, rearrange the notation such that x₁=(x₁, y_(l), z₁) denotes the one of the two points that has the smaller x coordinate, while x₂=(x₂, y₂, z₂) denotes the one with bigger x coordinate. The ellipsoid is touching the left boundary of the solution domain (suppose the left boundary is x=0) if equation (126) holds. If the left boundary is a wall, a bounding force and torque needs to be applied to keep the particle in the solution domain. The bounding force and torque are given by equations (127), where the tolerance tol can be set similar to the 2D case according to equation (128), while the parameter A can be one order larger than the resultant body force on the particle. Similarly, the ellipsoid is touching the right boundary of the solution domain (suppose the right boundary is x=xlength) if equation (129) holds. If the right boundary is a wall, a bounding force and torque needs to be applied to keep the particle in the solution domain. The bounding force and torque are given by equations (130).

VI. Moment of Inertia of an Ellipsoid

Moment of inertia tensor of an ellipsoid is defined by equation (131), or in terms of tensor notation, equation (132), where r_(i) is the vector from the centroid of the particle to a material point in the particle. For an ellipsoidal particle, it would be more convenient to calculate the integral in a local coordinate system whose axes are the three major axes. Hence, the coordinate transformation is employed and the moment of inertia is rewritten as stated in equation (133), where l_(k′k) is the direction cosine for the k′^(th) coordinate axis of the local system and the k^(th) coordinate axis of the global system. Since both the local and global coordinate systems are orthonormal systems, one has equation (134). Applying the equality to the moment of inertia, the expression can be simplified to equation (135). The moment of inertia can be further simplified considering the symmetry of an ellipsoid as per equation (136). Hence, if i=j, the moment of inertia becomes (no sum on i) as given by equation (137). Furthermore, if i≠j, the moment of inertia becomes (no sum on i, j) as given by equation (138). Since rigid particles do not change shape in the simulation (they only change positions and orientations), it would be convenient to calculate the three integrals for each particle (with respect to the local coordinate system) before the time loop of the code, as per equation (139). With the above definition of the three integrals, one has, for i=j, equation (140), and for i≠j, (no sum on i, j), equation (141). It is preferable that the moment of inertia tensor be calculated at the end of each time step using equations (140) and (141).

VII. Systems for Implementation

Having described the details of various embodiments and aspects of the invention, an exemplary system 600, which may be used to implement one or more such embodiments or aspects, will now be described with reference to FIG. 6. As illustrated in FIG. X, the system includes a central processing unit (CPU) X01 that provides computing resources and controls the system. CPU X01 may be implemented with a microprocessor or the like, and may also include a graphics processor and/or a floating point coprocessor for mathematical computations. System X00 may also include system memory X02, which may be in the form of random-access memory (RAM) and read-only memory (ROM).

A number of controllers and peripheral devices may also be provided, as shown in FIG. 6. An input controller 603 represents an interface to various input device(s) 604, such as a keyboard, mouse, or stylus. There may also be a scanner controller 605, which communicates with a scanner 606. System 600 may also include a storage controller 607 for interfacing with one or more storage devices 608 each of which includes a storage medium such as magnetic tape or disk, or an optical medium that might be used to record programs of instructions for operating systems, utilities and applications which may include embodiments of programs that implement various aspects of the present invention. Storage device(s) 608 may also be used to store processed data or data to be processed in accordance with the invention. System 600 may also include a display controller 609 for providing an interface to a display device 611, which may be any known type of display. System 600 may also include a printer controller 612 for communicating with a printer 613. A communications controller 614 may interface with one or more communication devices 615, which enables system 600 to connect to remote devices through any of a variety of networks including the Internet, a local area network (LAN), a wide area network (WAN), or through any suitable wireless protocol.

In the illustrated system, all major system components may connect to a bus 616, which may represent more than one physical bus. However, various system components may or may not be in physical proximity to one another. For example, input data and/or output data may be remotely transmitted from one physical location to another. In addition, programs that implement various aspects of this invention may be accessed from a remote location (e.g., a server) over a network. Such data and/or programs may be conveyed through any of a variety of machine-readable medium including magnetic tape or disk or optical disc, or a transmitter-receiver pair.

The present invention may be conveniently implemented with software. However, alternative implementations are certainly possible, including a hardware implementation or a software/hardware implementation. Any hardware-implemented functions may be realized using ASIC(s), digital signal processing circuitry, or the like. Accordingly, the term “medium” as used herein includes any such medium having instructions implemented in software or hardware, or a combination thereof, embodied thereon. With these implementation alternatives in mind, it is to be understood that the figures and accompanying description provide the functional information one skilled in the art would require to write program code (i.e., software) or to fabricate circuits (i.e., hardware) to perform the processing required.

In accordance with further aspects of the invention, any of the above-described methods or steps thereof may be embodied in a program of instructions (e.g., software), which may be stored on, or conveyed to, a computer or other processor-controlled device for execution on a computer-readable medium. Alternatively, any of the methods or steps thereof may be implemented using functionally equivalent hardware (e.g., application specific integrated circuit (ASIC), digital signal processing circuitry, etc.) or a combination of software and hardware.

While the invention has been described in conjunction with several specific embodiments, further alternatives, modifications, and variations will be apparent to those skilled in the art in light of the foregoing description. Thus, the invention described herein is intended to embrace all such alternatives, modifications, and variations as may fall within the spirit and scope of the appended claims.

APPENDIX

$\begin{matrix} {{{{- \varepsilon_{0}}{\nabla{\cdot \left( {\varepsilon {\nabla\varphi}} \right)}}} - q},\; {{in}\mspace{14mu} \Omega}} & (1) \\ {{{\rho \left\lbrack {\frac{\partial u}{\partial t} + {\left( {u \cdot \nabla} \right)u}} \right\rbrack} = {{- {\nabla p}} + {\mu {\nabla^{2}u}} + {qE}}},\; {{in}\mspace{14mu} \Omega},} & (2) \\ {{{\nabla{\cdot u}} = 0},{{in}\mspace{14mu} \Omega},} & (3) \\ {{{\frac{1}{2}\left\lbrack {{\nabla u} + \left( {\nabla u} \right)^{T}} \right\rbrack} = 0},{{in}\mspace{14mu} {{P(t)}.}}} & (4) \\ \begin{matrix} \begin{matrix} {\rho = \left\{ \begin{matrix} \rho_{s} & {{{in}\mspace{14mu} {P(t)}}\mspace{31mu}} \\ \rho_{f} & {{{in}\mspace{11mu} {\Omega \backslash {P(t)}}},} \end{matrix} \right.} \\ {\varepsilon = \left\{ \begin{matrix} \varepsilon_{s} & {{{in}\mspace{14mu} {P(t)}}\mspace{34mu}} \\ \varepsilon_{f} & {{{in}\mspace{14mu} {\Omega \backslash {P(t)}}},} \end{matrix} \right.} \end{matrix} \\ {q = \left\{ \begin{matrix} q_{s} & {{in}\mspace{14mu} {P(t)}} \\ q_{f} & {{in}\mspace{14mu} {\Omega \backslash {{P(t)}.}}} \end{matrix} \right.} \end{matrix} & (5) \\ {u = u^{BC}} & (6) \\ {{p = p^{BC}},{\frac{\partial u}{\partial n} = 0},} & (7) \\ {\varphi = V^{BC}} & (8) \\ {{\frac{\partial\varphi}{\partial n} = 0},} & (9) \\ \begin{matrix} {{x = {Lx}^{\prime}},{y = {Ly}^{\prime}},{z = {Lz}^{\prime}},{t = {\frac{L}{U}t^{\prime}}},} \\ {{p = {\left( {\rho_{f}U^{2}} \right)p^{\prime}}},{u = {Uu}^{\prime}},{\rho = {\rho_{f}\rho^{\prime}}},{\varphi = {V_{0}\varphi^{\prime}}},} \end{matrix} & (10) \\ {{{\nabla{\cdot \left( {\varepsilon {\nabla\varphi}} \right)}} = {- \sigma}},} & (11) \\ {{{\frac{\partial u}{\partial t} + {\left( {u \cdot \nabla} \right)u}} = {{{- \frac{1}{\rho}}{\nabla p}} + {\frac{1}{\rho \; {Re}}{\nabla^{2}u}} + {\frac{1}{\rho}f_{e}}}},} & (12) \\ {{{\nabla{\cdot u}} = 0},} & (13) \\ {{{\frac{1}{2}\left\lbrack {{\nabla u} + \left( {\nabla u} \right)^{T}} \right\rbrack} = 0},} & (14) \\ \begin{matrix} {\rho = \left\{ {{{\begin{matrix} {\rho_{s}/\rho_{f}} & {{{in}\mspace{14mu} {P(t)}}\mspace{34mu}} \\ 1 & {{{in}\mspace{14mu} {\Omega \backslash {P(t)}}},} \end{matrix}{Re}} = \frac{\rho_{f}{UL}}{\mu}},} \right.} \\ {{\sigma = {\frac{L^{2}}{\varepsilon_{0}V_{0}}q}},{f_{e} = {\frac{L}{\rho_{f}U^{2}}{{qE}.}}}} \end{matrix} & (15) \\ \begin{matrix} {{x = {Lx}^{\prime}},{y = {Ly}^{\prime}},{z = {Lz}^{\prime}},{t = {\frac{\rho_{f}L^{2}}{\mu}t^{\prime}}},} \\ {{p = {\frac{\mu \; U}{L}p^{\prime}}},{u = {Uu}^{\prime}},{\rho = {\rho_{f}\rho^{\prime}}},{\varphi = {V_{0}\varphi^{\prime}}},} \end{matrix} & (16) \\ {{{\nabla{\cdot \left( {\varepsilon {\nabla\varphi}} \right)}} = {- \sigma}},} & (17) \\ {{{\frac{\partial u}{\partial t} + {{{Re}\left( {u \cdot \nabla} \right)}u}} = {{{- \frac{1}{\rho}}{\nabla p}} + {\frac{1}{\rho}{\nabla^{2}u}} + {\frac{1}{\rho}f_{e}}}},} & (18) \\ {{{\nabla{\cdot u}} = 0},} & (19) \\ {{{\frac{1}{2}\left\lbrack {{\nabla u} + \left( {\nabla u} \right)^{T}} \right\rbrack} = 0},} & (20) \\ \begin{matrix} {\rho = \left\{ {{{\begin{matrix} {\rho_{s}/\rho_{f}} & {{{in}\mspace{14mu} {P(t)}}\mspace{34mu}} \\ 1 & {{{in}\mspace{14mu} {\Omega \backslash {P(t)}}},} \end{matrix}{Re}} = \frac{\rho_{f}{UL}}{\mu}},} \right.} \\ {{\sigma = \frac{L^{2}}{\varepsilon_{0}V_{0}q}},{f_{e} = {\frac{L^{2}}{\mu \; U}{{qE}.}}}} \end{matrix} & (21) \\ {u^{n} = {u\left( {t = {n\; \Delta \; t}} \right)}} & (22) \\ {u^{*} = {u^{n} + {\Delta \; t{\left\{ {{- \left\lbrack {\left( {u \cdot \nabla} \right)u} \right\rbrack^{n}} + {\frac{1}{\rho^{n}{Re}}{\nabla^{2}u^{n}}} + \frac{f_{e}^{n}}{\rho^{n}}} \right\}.}}}} & (23) \\ {{\nabla{\cdot u^{*}}} = {\nabla{\cdot {\left\lbrack {\frac{\Delta \; t}{\rho^{n}}{\nabla p^{n + 1}}} \right\rbrack.}}}} & (24) \\ {\hat{u} = {u^{*} - {\frac{\Delta \; t}{\rho^{n}}{{\nabla p^{n + 1}}.}}}} & (25) \\ {u^{**} = {u^{n} + {\Delta \; t{\left\{ {{- {{Re}\left\lbrack {\left( {u \cdot \nabla} \right)u} \right\rbrack}^{n}} - {\frac{1}{\rho^{n}}{\nabla p^{n}}} + {\frac{1}{\rho^{n}}{\nabla^{2}u^{**}}} + \frac{f_{e}^{n}}{\rho^{n}}} \right\}.}}}} & (26) \\ {u^{*} = {u^{**} + {\frac{\Delta \; t}{\rho^{n}}{{\nabla p^{n}}.}}}} & (27) \\ {{\nabla{\cdot u^{*}}} = {\nabla{\cdot {\left\lbrack {\frac{\Delta \; t}{\rho \left( \varphi^{n} \right)}{\nabla p^{n + 1}}} \right\rbrack.}}}} & (28) \\ {\hat{u} = {u^{*} - {\frac{\Delta \; t}{p^{n}}{{\nabla p^{n + 1}}.}}}} & (29) \\ {{{MU}^{n + 1} = {\int_{P{(t)}}{\rho_{s}\hat{u}{\; \Omega}}}},} & (30) \\ {{{I_{p}\Omega^{n + 1}} = {\int_{P{(t)}}{\left( {x - x_{c}^{n}} \right) \times \rho_{s}\hat{u}{\Omega}}}},} & (31) \\ {{u^{n + 1}\left( {x,y} \right)} = \left\{ \begin{matrix} {u\left( {x,y} \right)} & {{{if}\mspace{14mu} \left( {x,y} \right)} \in {\Omega \backslash {P(t)}}} \\ {U^{n + 1} + {\Omega^{n + 1} \times \left( {x - x_{c}^{n}} \right)}} & {{{if}\mspace{14mu} \left( {x,y} \right)} \in {P(t)}} \end{matrix} \right.} & (32) \\ {x_{c}^{n + 1} = {x_{c}^{n} + {\Delta \; {{tU}^{n + 1}.}}}} & (33) \\ {{l_{1^{\prime}\alpha} = {l_{1^{\prime}\alpha} + {\Delta \; t{\sum\limits_{\beta = 1}^{3}{\sum\limits_{\gamma = 1}^{3}{e_{\alpha\beta\gamma}\Omega_{\beta}l_{1^{\prime}\gamma}}}}}}},{\alpha = 1},2,3,} & (34) \\ {{{\overset{.}{U}}^{C} = {\frac{1}{M}\left( {F^{C} + F^{w}} \right)}},{{\overset{.}{\Omega}}^{C} = {\left( I_{p} \right)^{- 1}\left( {T^{C} + T^{w}} \right)}},} & (35) \\ {\left. x_{c}^{n + 1}\leftarrow{x_{c}^{n + 1} + {\frac{\left( {\Delta \; t} \right)^{2}}{2}{\overset{.}{U}}^{C}}} \right.,} & (36) \\ {{l_{i^{\prime}\alpha} = {l_{i^{\prime}\alpha} + {\frac{\left( {\Delta \; t} \right)^{2}}{2}{\sum\limits_{\beta = 1}^{3}{\sum\limits_{\gamma = 1}^{3}{e_{\alpha\beta\gamma}{\overset{.}{\Omega}}_{\beta}^{C}l_{i^{\prime}\gamma}}}}}}},{\alpha = 1},2,3,{i = 1},2,3.} & (37) \\ {F^{n} = {{- \left\lbrack {\left( {u \cdot \nabla} \right)u} \right\rbrack^{n}} - {\frac{1}{\rho^{n}}{\nabla p^{n}}} + {\frac{1}{\rho^{n}{Re}}{\nabla^{2}u^{n}}} + {\frac{f_{e}^{n}}{p^{n}}.}}} & (39) \\ {{{\Delta \; t} < {\frac{1}{2}{\min\limits_{i,j}\left\lbrack {\frac{\Delta \; x}{{Re}{u}},\frac{\Delta \; y}{{Re}{v}},\frac{\Delta \; z}{{Re}{w}},\sqrt{\frac{2h}{F^{n}}}} \right\rbrack}}},} & (40) \\ {F^{n} = {{- {{Re}\left\lbrack {\left( {u \cdot \nabla} \right)u} \right\rbrack}^{n}} - {\frac{1}{\rho^{n}}{\nabla p^{n}}} + {\frac{1}{\rho^{n}}{\nabla^{2}u^{n}}} + {\frac{f_{e}^{n}}{\rho^{n}}.}}} & (41) \\ {\left\lbrack {\left( {u^{n} \cdot \nabla} \right)u^{n}} \right\rbrack_{({i,j,k})} = {{{\max \left( {u_{i,j,k}^{n},0} \right)}\frac{u_{i,j,k}^{n} - u_{{i - 1},j,k}^{n}}{\Delta \; x}} + {{\min \left( {u_{i,j,k}^{n},0} \right)}\frac{u_{{i + 1},j,k}^{n} - u_{i,j,k}}{\Delta \; x}} + {{\max \left( {v_{i,j,k}^{n},0} \right)}\frac{u_{i,j,k}^{n} - u_{i,{j - 1},k}^{n}}{\Delta \; y}} + {{\min \left( {v_{i,j,k}^{n},0} \right)}\frac{u_{i,{j + 1},k}^{n} - u_{i,j,k}^{n}}{\Delta \; y}} + {{\max \left( {w_{i,j,k}^{n},0} \right)}\frac{u_{i,j,k}^{n} - u_{i,,j,{k - 1}}^{n}}{\Delta \; z}} + {{\min \left( {w_{i,j,k}^{n},0} \right)}{\frac{u_{i,j,{k + 1}}^{n} - u_{i,j,k}^{n}}{\Delta \; z}.}}}} & (42) \\ {\left\lbrack {\mu {\nabla^{2}u^{n}}} \right\rbrack_{({i,j,k})} = {{\mu_{i,j,k}\left\lbrack {\frac{u_{{i + 1},j,k}^{n} - {2u_{i,j,k}^{n}} + u_{{i - 1},j,k}^{n}}{\Delta \; x^{2}} + \frac{u_{i,j,{+ 1},k}^{n} - {2u_{i,j,k}^{n}} + u_{i,j,{- 1},k}^{n}}{\Delta \; y^{2}} + \frac{u_{i,j,{k + 1}}^{n} - {2u_{i,j,k}^{n}} + u_{i,j,{k - 1}}^{n}}{\Delta \; z^{2}}} \right\rbrack}.}} & (43) \\ {{\left\lbrack {\nabla{\cdot \left( {\varepsilon {\nabla\varphi^{n}}} \right)}} \right\rbrack_{({i,j,k})} = \left\lbrack {\frac{{\varepsilon_{{i + {1/2}},j,k}^{n}\left( {\varphi_{{i + 1},j,k}^{n} - \varphi_{i,j,k}^{n}} \right)} - {\varepsilon_{{i - {1/2}},j,k}^{n}\left( {\varphi_{i,j,k}^{n} - \varphi_{{i - 1},j,k}^{n}} \right)}}{\Delta \; x^{2}} + \frac{{\varepsilon_{i,{j + {1/2}},k}^{n}\left( {\varphi_{i,j,{+ 1},k}^{n} - \varphi_{i,j,k,}^{n}} \right)} - {\varepsilon_{i,{j - {1/2}},k}^{n}\left( {\varphi_{i,j,k}^{n} - \varphi_{i,{j - 1},k}^{n}} \right)}}{\Delta \; y^{2}} + \frac{{\varepsilon_{i,j,{k + {1/2}}}^{n}\left( {\varphi_{i,j,{k + 1}}^{n} - \varphi_{i,j,k}^{n}} \right)} - {\varepsilon_{i,j,{k - {1/2}}}^{n}\left( {\varphi_{i,j,k}^{n} - \varphi_{i,j,{k - 1}}^{n}} \right)}}{\Delta \; z^{2}}} \right\rbrack},} & (44) \\ \begin{matrix} {{\varepsilon_{{i + {1/2}},j,k}^{n} = \frac{\varepsilon_{{i + 1},j,k}^{n} + \varepsilon_{i,j,k}^{n}}{2}},{\varepsilon_{i,j,{{+ 1}/2},k}^{n} = \frac{\varepsilon_{i,j,{+ 1},k}^{n} + \varepsilon_{i,j,k}^{n}}{2}}} \\ {\varepsilon_{i,j,{k + {1/2}}}^{n} = {\frac{\varepsilon_{i,j,{k + 1}}^{n} + \varepsilon_{i,j,k}^{n}}{2}.}} \end{matrix} & (45) \\ \begin{matrix} \begin{matrix} {{\left( E_{x}^{n} \right)_{({i,j,k})} = {{- \left( \frac{\partial\varphi^{n}}{\partial x} \right)_{({i,j,k})}} = {- \left( \frac{\varphi_{{i + 1},j,k}^{n} - \varphi_{{i - 1},j,k}^{n}}{2\Delta \; x} \right)}}},} \\ {{\left( E_{y}^{n} \right)_{({i,j,k})} = {{- \left( \frac{\partial\varphi^{n}}{\partial y} \right)_{({i,j,k})}} = {- \left( \frac{\varphi_{i,{j + 1},k}^{n} - \varphi_{i,{j - 1},k}^{n}}{2{\Delta y}} \right)}}},} \end{matrix} \\ {\left( E_{z}^{n} \right)_{({i,j,k})} = {{- \left( \frac{\partial\varphi^{n}}{\partial z} \right)_{({i,j,k})}} = {- {\left( \frac{\varphi_{i,j,{k + 1}}^{n} - \varphi_{i,j,{k - 1}}^{n}}{2{\Delta z}} \right).}}}} \end{matrix} & (46) \\ {{\frac{x^{2}}{\left( {a_{j} + a_{k}} \right)^{2}} + \frac{y^{2}}{\left( {b_{j} + a_{k}} \right)^{2}}} = 1.} & (47) \\ \begin{matrix} {{x_{c,k,j} = {{\left( {x_{c,k} - x_{c,j}} \right)\cos \; \alpha_{j}} + {\left( {u_{c,k} - y_{c,j}} \right)\sin \; \alpha_{j}}}},} \\ {y_{c,k,j} = {{{- \left( {x_{c,k} - x_{c,j}} \right)}\sin \; \alpha_{j}} + {\left( {y_{c,k} - y_{c,j}} \right)\cos \; {\alpha_{j}.}}}} \end{matrix} & (48) \\ {D_{k,j} = {\frac{x_{c,k,j}^{2}}{\left( {a_{j} + a_{k}} \right)^{2}} + \frac{y_{c,k,j}^{2}}{\left( {b_{j} + a_{k}} \right)^{2}} - 1.}} & (49) \\ {x_{k}^{i} = {a_{k}{\cos\left( {{2\left( {i - 1} \right){\pi/m}},{y_{k}^{i} = {b_{k}{{\sin \left( {2\left( {i - 1} \right){\pi/m}} \right)}.}}}} \right.}}} & (50) \\ \begin{matrix} {{x_{k,j}^{i} = {{x_{k}^{i}{\cos \left( {\alpha_{k} - \alpha_{j}} \right)}} + {y_{k}^{i}{\sin \left( {\alpha_{k} - \alpha_{j}} \right)}} + x_{c,k,j}}},} \\ {y_{k,j}^{i} = {{{- x_{k}^{i}}{\sin \left( {\alpha_{k} - \alpha_{j}} \right)}} + {y_{k}^{i}{\cos \left( {\alpha_{k} - \alpha_{j}} \right)}} + {y_{c,k,j}.}}} \end{matrix} & (51) \\ {D_{k,j}^{i} = {\frac{\left( x_{k,j}^{i} \right)^{2}}{\left( a_{j} \right)^{2}} + \frac{\left( y_{k,j}^{i} \right)^{2}}{\left( b_{j} \right)^{2}} - 1.}} & (52) \\ {{x_{j}^{i} = {a_{j}{\cos \left( {2\left( {i - 1} \right){\pi/m}} \right)}}},{y_{j}^{i} = {b_{j}{{\sin \left( {2\left( {i - 1} \right){\pi/m}} \right)}.}}}} & (53) \\ \begin{matrix} {{x_{j,k}^{i} = {{x_{j}^{i}{\cos \left( {\alpha_{j} - \alpha_{k}} \right)}} + {y_{j}^{i}{\sin \left( {\alpha_{j} - \alpha_{k}} \right)}} + x_{c,j,k}}},} \\ {{y_{j,k}^{i} = {{{- x_{j}^{i}}{\sin \left( {\alpha_{j} - \alpha_{k}} \right)}} + {y_{j}^{i}{\cos \left( {\alpha_{j} - \alpha_{k}} \right)}} + y_{c,j,k}}},} \end{matrix} & (54) \\ \begin{matrix} {{x_{c,j,k} = {{\left( {x_{c,j} - x_{c,k}} \right)\cos \; \alpha_{k}} + {\left( {y_{c,j} - y_{c,k}} \right)\sin \; \alpha_{k}}}},} \\ {y_{c,j,k} = {{{- \left( {x_{c,j} - x_{c,k}} \right)}\sin \; \alpha_{k}} + {\left( {y_{c,j} - y_{c,k}} \right)\cos \; {\alpha_{k}.}}}} \end{matrix} & (55) \\ {D_{j,k}^{i} = {\frac{\left( x_{j,k}^{i} \right)^{2}}{\left( a_{k} \right)^{2}} + \frac{\left( y_{j,k}^{i} \right)^{2}}{\left( b_{k} \right)^{2}} - 1.}} & (56) \\ \begin{matrix} {{F_{j}^{C} = {A\frac{\left( {{x_{{cont},k} - x_{{cont},j}},{y_{{cont},k} - x_{{cont},j}}} \right)}{\left( {{x_{{cont},k} - x_{{cont},j}},{y_{{cont},k} - x_{{cont},j}}} \right)}}},} \\ {{F_{k}^{C} = {- F_{j}^{C}}},} \end{matrix} & (57) \\ \begin{matrix} {{T_{j}^{C} = {\left( {{x_{{cont},j} - x_{c,j}},{y_{{cont},j} - y_{c,j}}} \right) \times F_{j}^{C}}},} \\ {{T_{k}^{C} = {\left( {{x_{{cont},k} - x_{c,k}},{y_{{cont},k} - y_{c,k}}} \right) \times F_{k}^{C}}},} \end{matrix} & (58) \\ {{x_{c,j}^{n + 1} = {x_{c,j}^{n} + {\Delta \; {tU}_{j}^{n + 1}} + {\frac{F_{j}^{C}}{2M_{j}}\Delta \; t^{2}}}},} & (59) \\ {{\alpha_{j}^{n + 1} = {\alpha_{j}^{n} + {\Delta \; t\; \omega_{j}^{n + 1}} + {\frac{T_{j}^{C} \cdot e_{z}}{2I_{j}}\Delta \; t^{2}}}},} & (60) \\ {{n_{k}^{k} = \frac{\left( {{{- b_{k}}\cos \; \theta},{{- a_{k}}\sin \; \theta}} \right)}{{a_{k}^{2}\sin^{2}\theta} + {b_{k}^{2}\cos^{2}\theta}}},{\theta = {\frac{2\left( {p - 1} \right)\pi}{m}.}}} & (61) \\ {n_{k} = {\left( {{{\left( n_{k}^{k} \right)_{1}\cos \; \alpha_{k}} - {\left( n_{k}^{k} \right)_{2}\sin \; \alpha_{k}}},{{\left( n_{k}^{k} \right)_{1}\sin \; \alpha_{k}} + {\left( n_{k}^{k} \right)_{2}\cos \; \alpha_{k}}}} \right).}} & (62) \\ {{{\varepsilon \; a_{j}\cos \; \theta} = x_{{cont},k}^{j}},{{\varepsilon \; b_{j}\sin \; \theta} = {y_{{cont},k}^{j}.}}} & (63) \\ {{\varepsilon = \sqrt{\left( \frac{x_{{cont},k}^{j}}{a_{j}} \right)^{2} + \left( \frac{y_{{cont},k}^{j}}{b_{j}} \right)^{2}}},} & (64) \\ {\theta_{c} = {{\arcsin \left( \frac{y_{{cont},k}^{j}}{\varepsilon \; b_{j}} \right)}.}} & (65) \\ {\left( {x_{{cont},j}^{j},y_{{cont},j}^{j}} \right) = {\left( {{a_{j}\cos \; \theta_{c}},{b_{j}\sin \; \theta_{c}}} \right).}} & (66) \\ {\left( {x_{{cont},j},y_{{cont},j}} \right) = {\left( {{{a_{j}\cos \; \theta_{c}\cos \; \alpha_{j}} - {b_{j}\sin \; \theta_{c}\sin \; \alpha_{j}}},{{a_{j}\cos \; \theta_{c}\sin \; \alpha_{j}} + {b_{j}\sin \; \theta_{c}\cos \; \alpha_{j}}}} \right).}} & (67) \\ {{F_{k}^{C} = {A{{x_{{cont},j} - x_{{cont},k}}}^{2}n_{k}}},{F_{j}^{C} = {- {F_{k}^{C}.}}}} & (68) \\ \begin{matrix} {{T_{j}^{C} = {\left( {{x_{{cont},j} - x_{c,j}},{y_{{cont},j} - y_{c,j}}} \right) \times F_{j}^{C}}},} \\ {T_{k}^{C} = {\left( {{x_{{cont},k} - x_{c,k}},{y_{{cont},k} - y_{c,k}}} \right) \times {F_{k}^{C}.}}} \end{matrix} & (69) \\ {{l_{\alpha\beta}^{j} = {e_{\alpha}^{j} \cdot e_{\beta}}},} & (70) \\ {{\frac{x^{2}}{\left( {a_{j} + a_{k}} \right)^{2}} + \frac{y^{2}}{\left( {b_{j} + a_{k}} \right)^{2}} + \frac{z^{2}}{\left( {c_{j} + a_{k}} \right)^{2}}} = 1.} & (71) \\ \begin{matrix} \begin{matrix} {{x_{c,k,j} = {{\left( {x_{c,k} - x_{c,j}} \right)l_{11}^{j}} + {\left( {y_{c,k} - y_{c,j}} \right)l_{12}^{j}} + {\left( {z_{c,k} - z_{c,j}} \right)l_{13}^{j}}}},} \\ {{y_{c,k,j} = {{\left( {x_{c,k} - x_{c,j}} \right)l_{21}^{j}} + {\left( {y_{c,k} - y_{c,j}} \right)l_{22}^{j}} + {\left( {z_{c,k} - z_{c,j}} \right)l_{23}^{j}}}},} \end{matrix} \\ {z_{c,k,j} = {{\left( {x_{c,k} - x_{c,j}} \right)l_{31}^{j}} + {\left( {y_{c,k} - y_{c,j}} \right)l_{32}^{j}} + {\left( {z_{c,k} - z_{c,j}} \right){l_{33}^{j}.}}}} \end{matrix} & (72) \\ {D_{k,j} = {\frac{x_{c,k,j}^{2}}{\left( {a_{j} + a_{k}} \right)^{2}} + \frac{y_{c,k,j}^{2}}{\left( {b_{j} + a_{k}} \right)^{2}} + \frac{z_{c,k,j}^{2}}{\left( {c_{j} + a_{k}} \right)^{2}} - 1.}} & (73) \\ {{x_{k} = {a_{k}{\cos \left( \theta_{p} \right)}{\cos \left( \varphi_{q} \right)}}},\; {y_{k} = {b_{k}{\sin \left( \theta_{p} \right)}{\cos \left( \varphi_{q} \right)}}},\; {z_{k} = {c_{k}{\sin \left( \varphi_{q} \right)}}},} & (74) \\ {{\theta_{p} = \frac{2p\; \pi}{m}},{\varphi_{q} = {{- \frac{\pi}{2}} + {\frac{q\; \pi}{n}.}}}} & (75) \\ \begin{matrix} \begin{matrix} {{x_{k,j} = {{x_{k}l_{11}^{jk}} + {y_{k}l_{12}^{jk}} + {z_{k}l_{13}^{jk}} + x_{c,k,j}}},} \\ {{y_{k,j} = {{x_{k}l_{21}^{jk}} + {y_{k}l_{22}^{jk}} + {z_{k}l_{23}^{jk}} + y_{c,k,j}}},} \end{matrix} \\ {{z_{k,j} = {{x_{k}l_{31}^{jk}} + {y_{k}l_{32}^{jk}} + {z_{k}l_{33}^{jk}} + z_{c,k,j}}},} \end{matrix} & (76) \\ {l_{\alpha\beta}^{jk} = {\sum\limits_{\gamma = 1}^{3}{l_{\alpha\gamma}^{j}{l_{\beta\gamma}^{k}.}}}} & (77) \\ {D_{k,j} = {\frac{\left( x_{k,j} \right)^{2}}{\left( a_{j} \right)^{2}} + \frac{\left( y_{k,j} \right)^{2}}{\left( b_{j} \right)^{2}} + \frac{\left( z_{k,j} \right)^{2}}{\left( c_{j} \right)^{2}} - 1.}} & (78) \\ \begin{matrix} \begin{matrix} {{x_{{cont},k} = {{x_{{cont},k}^{k}l_{11}^{k}} + {y_{{cont},k}^{k}l_{21}^{k}} + {z_{{cont},k}^{k}l_{31}^{k}} + x_{c,k}}},} \\ {{y_{{cont},k} = {{x_{{cont},k}^{k}l_{12}^{k}} + {y_{{cont},k}^{k}l_{22}^{k}} + {z_{{cont},k}^{k}l_{32}^{k}} + y_{c,k}}},} \end{matrix} \\ {z_{{cont},k} = {{x_{{cont},k}^{k}l_{13}^{k}} + {y_{{cont},k}^{k}l_{23}^{k}} + {z_{{cont},k}^{k}l_{33}^{k}} + z_{c,k}}} \end{matrix} & (79) \\ \begin{matrix} \begin{matrix} {{x_{{cont},k}^{j} = {{x_{{cont},k}^{k}l_{11}^{k}} + {y_{{cont},k}^{k}l_{12}^{k}} + {z_{{cont},k}^{k}l_{13}^{k}} + x_{c,k,j}}},} \\ {{y_{{cont},k}^{j} = {{x_{{cont},k}^{k}l_{21}^{k}} + {y_{{cont},k}^{k}l_{22}^{k}} + {z_{{cont},k}^{k}l_{23}^{k}} + y_{c,k,j}}},} \end{matrix} \\ {z_{{cont},k}^{j} = {{x_{{cont},k}^{k}l_{31}^{k}} + {y_{{cont},k}^{k}l_{32}^{k}} + {z_{{cont},k}^{k}l_{33}^{k}} + {z_{c,k,j}.}}} \end{matrix} & (80) \\ {{n_{k}^{k} = {\left( {{{- a_{k}}\cos \; \theta_{p}\sin \; \varphi_{q}},{{- b_{k}}\sin \; \theta_{p}\sin \; \varphi_{q}},{c_{k}\cos \; \varphi_{q}}} \right) \times \left( {{{- a_{k}}\sin \; \theta_{p}},{b_{k}\cos \; \theta_{p}},0} \right)}},} & (81) \\ {\left. n_{k}^{k}\leftarrow\frac{n_{k}^{k}}{n_{k}^{k}} \right.,} & (82) \\ {\left( n_{k} \right)_{\alpha} = {\sum\limits_{\gamma = 1}^{3}{{l_{\gamma\alpha}^{k}\left( n_{k}^{k} \right)}_{\gamma}.}}} & (83) \\ {{\left( {x_{j},y_{j},z_{j}} \right) = \left( {{a_{j}\cos \; \theta \; \cos \; \varphi},{b_{j}\sin \; \theta \; \cos \; \varphi},{c_{j}\sin \; \varphi}} \right)},} & (84) \\ \begin{matrix} \begin{matrix} {{{\varepsilon \; a_{j}\cos \; \theta \; \cos \; \varphi} = x_{{cont},k}^{j}},} \\ {{{\varepsilon \; b_{j}\sin \; \theta \; \cos \; \varphi} = y_{{cont},k}^{j}},} \end{matrix} \\ {{\varepsilon \; c_{j}\sin \; \varphi} = {z_{{cont},k}^{j}.}} \end{matrix} & (85) \\ {1 = {\left( \frac{x_{{cont},k}^{j}}{\varepsilon \; a_{j}} \right)^{2} + \left( \frac{y_{{cont},k}^{j}}{\varepsilon \; b_{j}} \right)^{2} + \left( \frac{z_{{cont},k}^{j}}{\varepsilon \; c_{j}} \right)^{2}}} & (86) \\ {\varepsilon = {\sqrt{\left( \frac{x_{{cont},k}^{j}}{a_{j}} \right)^{2} + \left( \frac{y_{{cont},k}^{2}}{b_{j}} \right)^{2} + \left( \frac{z_{{cont},k}^{j}}{c_{j}} \right)^{2}}.}} & (87) \\ {\varphi = {{\arcsin \left( \frac{z_{{cont},k}^{j}}{\varepsilon \; c_{j}} \right)}.}} & (88) \\ {\theta = {{\arccos \left( \frac{x_{{cont},k}^{j}}{\varepsilon \; a_{j}\cos \; \varphi} \right)}.}} & (89) \\ {\left( {x_{{cont},j}^{j},y_{{cont},j}^{j},z_{{cont},j}^{j}} \right) = {\left( {{a_{j}\cos \; \theta \; \cos \; \varphi},\; {b_{j}\sin \; {\theta cos\varphi}},{c_{j}\sin \; \varphi}} \right).}} & (90) \\ {{n_{j}^{j} = {\left( {{{- a_{j}}\cos \; \theta \; \sin \; \varphi},{{- b_{j}}\sin \; {\theta sin}\; \varphi},{c_{j}\cos \; \varphi}} \right) \times \left( {{{- a_{k}}\sin \; \theta},{b_{j}\cos \; \theta},0} \right)}},} & (91) \\ {\left( n_{j} \right)_{\alpha} = {\sum\limits_{\gamma = 1}^{3}{{l_{\gamma\alpha}^{j}\left( n_{j}^{j} \right)}_{\gamma}.}}} & (92) \\ {{F_{k}^{C} = {An}_{k}},{F_{j}^{C} = {- F_{k}^{C}}},} & (93) \\ \begin{matrix} {{T_{j}^{C} = {\left( {{x_{{cont},j} - x_{c,j}},{y_{{cont},j} - y_{c,j}},{z_{{cont},j} - z_{c,j}}} \right) \times F_{j}^{C}}},} \\ {{T_{k}^{C} = {\left( {{x_{{cont},k} - x_{c,k}},{y_{{cont},k} - y_{c,k}},{z_{{cont},k} - z_{c,k}}} \right) \times F_{k}^{C}}},} \end{matrix} & (94) \\ {\left( {x,y,z} \right) = \left( {{a\; \cos \; \theta \; \cos \; \varphi},{b\; \sin \; \theta \; \cos \; \varphi},{c\; \sin \; \varphi}} \right)} & (95) \\ {{l_{\alpha\beta}^{j} = {e_{\alpha}^{j} \cdot e_{\beta}}},} & (96) \\ \begin{matrix} {{\tau_{1} = \left( {{{- a}\; \cos \; \theta \; \sin \; \varphi},{{- b}\; \sin \; \theta \; \sin \; \varphi},{c\; \cos \; \varphi}} \right)},} \\ {\tau_{2} = {\left( {{{- a}\; \sin \; \theta \; \cos \; \varphi},{b\; \cos \; \theta \; \cos \; \varphi},0} \right).}} \end{matrix} & (97) \\ {\tau_{1} = \left( {{{{- {al}_{11}^{j}}\cos \; \theta \; \sin \; \varphi} - {{bl}_{21}^{j}\sin \; \theta \; \sin \; \varphi} + {{cl}_{31}^{j}\cos \; \varphi}},{{{- {al}_{12}^{j}}\cos \; {\theta sin\varphi}} - {{bl}_{22}^{j}\sin \; {\theta sin}\; \varphi} + {{cl}_{32}^{j}\cos \; \varphi}},{{{- {al}_{13}^{j\;}}\cos \; \theta \; \sin \; \varphi} - {{bl}_{23}^{j}\sin \; \theta \; \sin \; \varphi} + {{cl}_{33}^{j}\cos \; \varphi}},} \right.} & (98) \\ {\tau_{2} = {\left( {{{{- {al}_{11}^{j}}\sin \; \theta \; \cos \; \varphi} + {{bl}_{21}^{j}\cos \; \theta \; \cos \; \varphi}},{{{- {al}_{12}^{j}}\sin \; {\theta cos}\; \varphi} + {{bl}_{22}^{j}\cos \; \theta \; \cos \; \varphi}},{{{- {al}_{13}^{j}}\sin \; \theta \; \cos \; \varphi} + {{bl}_{23}^{j}\cos \; \theta \; \cos \; \varphi}}} \right).}} & \; \\ \begin{matrix} {{{{{al}_{11}^{j}\cos \; \theta \; \sin \; \varphi} + {{bl}_{21}^{j}\sin \; \theta \; \sin \; \varphi} - {{cl}_{31}^{j}\cos \; \varphi}} = 0},} \\ {{{{al}_{11}^{j}\sin \; \theta \; \cos \; \varphi} - {{bl}_{21}^{j}\cos \; \theta \; \cos \; \varphi}} = 0.} \end{matrix} & (99) \\ {{\tan \; \theta} = {\frac{{bl}_{21}^{j}}{{al}_{11}^{j}}.}} & (100) \\ {{\theta_{1} = {\arctan \left\lbrack \frac{{bl}_{21}^{j}}{{al}_{11}^{j}} \right\rbrack}},{\theta_{2} = {\theta_{1} + {\pi.}}}} & (101) \\ {{\varphi_{1}{\arctan \left\lbrack \frac{{cl}_{31}^{j}}{{{al}_{11}^{j}\cos \; \theta} + {{bl}_{21}^{j}\sin \; \theta}} \right\rbrack}},{\varphi_{2} = {- {\varphi_{1}.}}}} & (102) \\ {{\left( {x_{1},y_{1},z_{1}} \right) = \left( {{x_{c}^{j} + {{al}_{11}^{j}\cos \; \theta_{1}\cos \; \varphi_{1}} + {{bl}_{21}^{j}\sin \; \theta_{1}\cos \; \varphi_{1}} + {{cl}_{31}^{j}\sin \; \varphi_{1}}},{y_{c}^{j} + {{al}_{12}^{j}\cos \; \theta_{1}\cos \; \varphi_{1}} + {{bl}_{22}^{j}\sin \; \theta_{1}\cos \; \varphi_{1}} + {{cl}_{32}^{j}\sin \; \varphi_{1}}},{z_{c}^{j} + {{al}_{13}^{j}\cos \; \theta_{1}\cos \; \varphi_{1}} + {{bl}_{23}^{j}\sin \; \theta_{1}\cos \; \varphi_{1}} + {{cl}_{33}^{j}\sin \; \varphi_{1}}}} \right)},} & (103) \\ {\left( {x_{2},y_{2},z_{2}} \right) = {\left( {{x_{c}^{j} + {{al}_{11}^{j}\cos \; \theta_{2}\cos \; \varphi_{2}} + {{bl}_{21}^{j}\sin \; \theta_{2}\cos \; \varphi_{2}} + {{cl}_{31}^{j}\sin \; \varphi_{2}}},{y_{c}^{j} + {{al}_{12}^{j}\cos \; \theta_{1}\cos \; \varphi_{1}} + {{bl}_{22}^{j}\sin \; \theta_{2}\cos \; \varphi_{2}} + {{cl}_{32}^{j}\sin \; \varphi_{2}}},{z_{c}^{j} + {{al}_{13}^{j}\cos \; \theta_{1}\cos \; \varphi_{1}} + {{bl}_{23}^{j}\sin \; \theta_{2}\cos \; \varphi_{2}} + {{cl}_{33}^{j}\sin \; \varphi_{2}}}} \right).}} & \; \\ \begin{matrix} {{x_{1} = {x_{c}^{j} + {{al}_{11}^{j}\cos \; \theta_{1}\cos \; \varphi_{1}} + {{bl}_{21}^{j}\sin \; \theta_{1}\cos \; \varphi_{1}} + {{cl}_{31}^{j}\sin \; \varphi_{1}}}},} \\ {x_{2} = {x_{c}^{j} + {{al}_{11}^{j}\cos \; \theta_{2}\cos \; \varphi_{2}} + {{bl}_{21}^{j}\sin \; \theta_{2}\cos \; \varphi_{2}} + {{cl}_{31}^{j}\sin \; {\varphi_{2}.}}}} \end{matrix} & (104) \\ {{i_{1} = {{{int}\left( {{{\min \left( {x_{1},x_{2}} \right)}/\Delta}\; x} \right)} + 1}},{i_{2} = {{{int}\left( {{{\max \left( {x_{1},x_{2}} \right)}/\Delta}\; x} \right)} + 1}},} & (105) \\ {{x_{1} = {x_{c}^{j} - b}},{x_{2} = {x_{c}^{j} + {b.}}}} & (106) \\ {{\theta_{1} = {\arctan \left\lbrack \frac{{bl}_{22}^{j}}{{al}_{12}^{j}} \right\rbrack}},{\theta_{2} = {\theta_{1} + {\pi.}}}} & (107) \\ {{\varphi_{1} = {\arctan \left\lbrack \frac{{cl}_{32}^{j}}{{{al}_{12}^{j}\cos \; \theta_{1}} + {{bl}_{22}^{j}\sin \; \theta_{1}}} \right\rbrack}},{\varphi_{2} = {- {\varphi_{1}.}}}} & (108) \\ \begin{matrix} {{y_{1} = {y_{c}^{j} + {{al}_{12}^{j}\cos \; \theta_{1}\cos \; \varphi_{1}} + {{bl}_{22}^{j}\sin \; \theta_{1}\cos \; \varphi_{1}} + {{cl}_{32}^{j}\sin \; \varphi_{1}}}},} \\ {y_{2} = {y_{c}^{j} + {{al}_{12}^{j}\cos \; \theta_{2}\cos \; \varphi_{2}} + {{bl}_{22}^{j}\sin \; \theta_{2}\cos \; \varphi_{2}} + {{cl}_{32}^{j}\sin \; {\varphi_{2}.}}}} \end{matrix} & (109) \\ \begin{matrix} {{j_{1} = {{{int}\left( {{{\min \left( {y_{1},y_{2}} \right)}/\Delta}\; y} \right)} + 1}},} \\ {j_{2} = {{{int}\left( {{{\max \left( {y_{1},y_{2}} \right)}/\Delta}\; y} \right)} + 1.}} \end{matrix} & (110) \\ {{y_{1} = {y_{c}^{j} - b}},{y_{2} = {y_{c}^{j} + {b.}}}} & (111) \\ {{\theta_{1} = {\arctan \left\lbrack \frac{{bl}_{23}^{j}}{{al}_{13}^{j}} \right\rbrack}},{\theta_{2} = {\theta_{1} + {\pi.}}}} & (112) \\ {{\varphi_{1} = {\arctan \left\lbrack \frac{{cl}_{33}^{j}}{{{al}_{13}^{j}\cos \; \theta_{1}} + {{bl}_{23}^{j}\sin \; \theta_{1}}} \right\rbrack}},{\varphi_{2} = {- {\varphi_{1}.}}}} & (113) \\ {{z_{1} = {z_{c}^{j} + {{al}_{13}^{j}\cos \; \theta_{1}\cos \; \varphi_{1}} + {{bl}_{23}^{j}\sin \; \theta_{1}\cos \; \varphi_{1}} + {{cl}_{33}^{j}\sin \; \varphi_{1}}}},} & (114) \\ {z_{2} = {z_{c}^{j} + {{al}_{13}^{j}\cos \; \theta_{2}\cos \; \varphi_{2}} + {{bl}_{23}^{j}\sin \; \theta_{2}\cos \; \varphi_{2}} + {{cl}_{33}^{j}\sin \; {\varphi_{2}.}}}} & \; \\ \begin{matrix} {{k_{1} - {{int}\left( {{{\min \left( {z_{1},z_{2}} \right)}/\Delta}\; z} \right)} + 1},} \\ {k_{2} = {{{int}\left( {{{\max \left( {z_{1},z_{2}} \right)}/\Delta}\; z} \right)} + 1.}} \end{matrix} & (115) \\ {{z_{1} = {z_{c}^{j} - b}},{z_{2} = {z_{c}^{j} + {b.}}}} & (116) \\ {{x^{\prime} = {a\; \cos \; \theta}},{y^{\prime} = {b\; \sin \; \theta}},} & (117) \\ {\tau = {{\frac{}{\theta}\left( {x^{\prime},y^{\prime}} \right)} = {\left( {{{- a}\; \sin \; \theta},{b\; \cos \; \theta}} \right).}}} & (118) \\ {\tau = {\left( {{{{- a}\; \sin \; \theta \; \cos \; \varphi} - {b\; \cos \; \theta \; \sin \; \varphi}},{{{- a}\; \sin \; \theta \; \sin \; \varphi} + {b\; \cos \; \theta \; \cos \; \varphi}}} \right).}} & (119) \\ {{{{- a}\; \sin \; \theta_{c}\cos \; \varphi} - {b\; \cos \; \theta_{c}\sin \; \varphi}} = 0} & (120) \\ {{\theta_{c\; 1} = {- {\arctan \left( {\frac{b}{a}\tan \; \varphi} \right)}}},{\theta_{c\; 2} = {\theta_{c\; 1} + {\pi.}}}} & (121) \\ {{x_{1} = {\left( {x_{1},y_{1}} \right) = {x_{c} + \left( {{{a\; \cos \; \theta_{c\; 1}\cos \; \varphi} - {b\; \sin \; \theta_{c\; 1}\sin \; \varphi}},{{a\; \cos \; \theta_{c\; 1}\sin \; \varphi} + {b\; \sin \; \theta_{c\; 1}\cos \; \varphi}}} \right)}}},} & (122) \\ {x_{2} = {\left( {x_{2},y_{2}} \right) = {{x_{c}\left( {{{a\; \cos \; \theta_{c\; 2}\cos \; \varphi} - {b\; \sin \; \theta_{c\; 2}\sin \; \varphi}},{{a\; \cos \; \theta_{c\; 2}\sin \; \varphi} + {b\; \sin \; \theta_{c\; 2}\cos \; \varphi}}} \right)}.}}} & \; \\ {{{tol} = {{\alpha \left( {{\Delta \; x} + {\Delta \; y}} \right)}/2}},} & (123) \\ {{F^{w} = \left( {{A\left( {{tol} - x_{1}} \right)}^{2},0} \right)},{T^{w} = {\left( {x_{1} - x_{c}} \right) \times F^{w}}},} & (124) \\ \begin{matrix} {{F^{w} = \left( {{- {A\left( {x_{2} + {tol} - {xlength}} \right)}^{2}},0} \right)},} \\ {T^{w} = {\left( {x_{2} - x_{c}} \right) \times {F^{w}.}}} \end{matrix} & (125) \\ {x_{1} < {{tol}.}} & (126) \\ {{F^{w} = \left( {{A\left( {{tol} - x_{1}} \right)}^{2},0,0} \right)},{T^{w} = {\left( {x_{1} - x_{c}} \right) \times F^{w}}},} & (127) \\ {{{tol} = {{\alpha \left( {{\Delta \; x} + {\Delta \; y} + {\Delta \; z}} \right)}/3}},{0.05 < \alpha < 0.25},} & (128) \\ {x_{2} > {{xlength} - {{tol}.}}} & (129) \\ {{F^{w} = \left( {{- {A\left( {{tol} - x_{2}} \right)}^{2}},0,0} \right)},{T^{w} = {\left( {x_{2} - x_{c}} \right) \times {F^{w}.}}}} & (130) \\ {I_{P} = {\int_{P}{{\rho \left( {{r \cdot {rI}} - {r \otimes r}} \right)}{\Omega}}}} & (131) \\ {{\left( I_{P} \right)_{ij} = {\int_{P}{{\rho \left( {{r_{k}r_{k}\delta_{ij}} - {r_{i}r_{j}}} \right)}{\Omega}}}},} & (132) \\ {{\left( I_{P} \right)_{ij} = {\int_{P}{{\rho \left( {{r_{k^{\prime}}r_{l^{\prime}}l_{k^{\prime}k}l_{l^{\prime}k}\delta_{ij}} - {r_{k^{\prime}}r_{l^{\prime}}l_{k^{\prime}i}l_{l^{\prime}j}}} \right)}{\Omega}}}},} & (133) \\ {{l_{k^{\prime}k}l_{l^{\prime}k}} = {\delta_{k^{\prime}l^{\prime}}.}} & (134) \\ \begin{matrix} {\left( I_{P} \right)_{ij} = {\int_{P}{{\rho \left( {{r_{k^{\prime}}r_{l^{\prime}}\delta_{k^{\prime}l^{\prime}}\delta_{ij}} - {r_{k^{\prime}}r_{l^{\prime}}l_{k^{\prime}i}l_{l^{\prime}j}}} \right)}{\Omega}}}} \\ {= {\int_{P}{{\rho \left( {{r_{k^{\prime}}r_{k^{\prime}}\delta_{ij}} - {r_{k^{\prime}}r_{l^{\prime}}l_{k^{\prime}i}l_{l^{\prime}j}}} \right)}{{\Omega}.}}}} \end{matrix} & (135) \\ {{\int_{P}{\rho \; r_{k^{\prime}}r_{l^{\prime}}{\Omega}}} = {{0\mspace{14mu} {if}\mspace{14mu} k^{\prime}} \neq {l^{\prime}.}}} & (136) \\ {\left. {\left( I_{P} \right)_{ii} = {{\int_{P}{{\rho\left\lbrack {1 - {l_{1^{\prime}i}l_{1^{\prime}i}}} \right)}r_{1^{\prime}}r_{1^{\prime}}}} + {\left( {1 - {l_{2^{\prime}i}l_{2^{\prime}i}}} \right)r_{2^{\prime}}r_{2^{\prime}}} + {\left( {1 - {l_{3^{\prime}i}l_{3^{\prime}i}}} \right)r_{3^{\prime}}r_{3^{\prime}}}}} \right\rbrack {\Omega}} & (137) \\ {\left( I_{P} \right)_{ij} = {- {\int_{P}{{\rho \left\lbrack {{l_{1^{\prime}i}l_{1^{\prime}j}r_{1^{\prime}}r_{1^{\prime}}} + {l_{2^{\prime}i}l_{2^{\prime}j}r_{2^{\prime}}r_{2^{\prime}}} + {l_{3^{\prime}i}l_{3^{\prime}j}r_{3^{\prime}}r_{3^{\prime}}}} \right\rbrack}{\Omega}}}}} & (138) \\ {{I_{1^{\prime}} = {\int_{P}{\rho \; r_{1^{\prime}}r_{1^{\prime}}{\Omega}}}},{I_{2^{\prime}} = {\int_{P}{\rho \; r_{2^{\prime}}r_{2^{\prime}}{\Omega}}}},{I_{3^{\prime}} = {\int_{P}{\rho \; r_{3^{\prime}}r_{3^{\prime}}{{\Omega}.}}}}} & (139) \\ {\left( I_{P} \right)_{ii} = {{\left( {1 - {l_{1^{\prime}i}l_{1^{\prime}i}}} \right)I_{1^{\prime}}} + {\left( {1 - {l_{2^{\prime}i}l_{2^{\prime}i}}} \right)I_{2^{\prime}}} + {\left( {1 - {l_{3^{\prime}i}l_{3^{\prime}i}}} \right)I_{3^{\prime}}}}} & (140) \\ {\left( I_{P} \right)_{ii} = {{{- l_{1^{\prime}i}}l_{1^{\prime}j}I_{1^{\prime}}} - {l_{2^{\prime}i}l_{2^{\prime}j}I_{2^{\prime}}} - {l_{3^{\prime}i}l_{3^{\prime}j}{I_{3^{\prime}}.}}}} & (141) \end{matrix}$ 

1. A non-transitory medium encoded with a program for execution by one or more processors to determine particle information in a particulate fluid flow, the program comprising: instructions for determining whether two particles can be in contact based on the location of the center of a second of the two particles with respect to an envelop of the first of the two particles; instructions for determining more precisely whether the first and second particles are in contact, including instructions for: dissecting the perimeter of the second particle into a plurality of patches defining a plurality of nodes and checking whether each node is located in the envelop, and which node is most inside the envelop, determining the contact point on the second particle based on the results of executing the dissecting instructions, and determining the contact point on the first particle; instructions for calculating a force and torque on the particles from the fluid; and instructions for determining, based at least in part on the calculated force and torque on the particles, updated velocity components, position, and orientation of at least one of the particles.
 2. The non-transitory medium as recited in claim 1, wherein the instructions for determining the contact point on the first particle comprise instructions for representing the surface of the first particle by a multiple parameter equation and solving for the multiple parameters in a local coordinate system of the first particle.
 3. A non-transitory medium encoded with a program for execution by one or more processors to determine particle information in a particulate fluid flow in a solution domain, the program comprising: instructions for finding an external bounding box for a particle in the particulate fluid flow; instructions for determining whether the particle is in contact with a boundary of the solution domain; and instructions for constructing a wall force and torque on the particle using the external bounding box.
 4. The non-transitory medium as recited in claim 3, wherein the boundary includes a vertical wall and a horizontal wall, and the instructions for determining comprise instructions for determining whether a particle is in contact with the vertical wall and instructions for determining whether the particle is in contact with the horizontal wall.
 5. The non-transitory medium as recited in claim 3, wherein the particle is an ellipsoidal particle.
 6. The non-transitory medium as recited in claim 5, wherein the program further comprises instructions for calculating the moment of inertia tensor for each particle in the particulate fluid flow. 